package com.caipos.actor.common.data.id;


import com.caipos.actor.common.data.EntityType;

import java.util.UUID;

public class EntityIdFactory {

    public static EntityId getByTypeAndId(String type, String uuid) {
        return getByTypeAndUuid(EntityType.valueOf(type), uuid);
    }

    public static EntityId getByTypeAndUuid(EntityType type, String uuid) {
        switch (type) {
            case TENANT:
                return TenantId.fromUUID(uuid);
        }
        throw new IllegalArgumentException("EntityType " + type + " is not supported!");
    }

//    public static EntityId getByEdgeEventTypeAndUuid(EdgeEventType edgeEventType, UUID uuid) {
//        switch (edgeEventType) {
//            case TENANT:
//                return TenantId.fromUUID(uuid);
//            case CUSTOMER:
//                return new CustomerId(uuid);
//            case USER:
//                return new UserId(uuid);
//            case DASHBOARD:
//                return new DashboardId(uuid);
//            case DEVICE:
//                return new DeviceId(uuid);
//            case ASSET:
//                return new AssetId(uuid);
//            case ALARM:
//                return new AlarmId(uuid);
//            case RULE_CHAIN:
//                return new RuleChainId(uuid);
//            case ENTITY_VIEW:
//                return new EntityViewId(uuid);
//            case WIDGETS_BUNDLE:
//                return new WidgetsBundleId(uuid);
//            case WIDGET_TYPE:
//                return new WidgetTypeId(uuid);
//            case DEVICE_PROFILE:
//                return new DeviceProfileId(uuid);
//            case ASSET_PROFILE:
//                return new AssetProfileId(uuid);
//            case TENANT_PROFILE:
//                return new TenantProfileId(uuid);
//            case OTA_PACKAGE:
//                return new OtaPackageId(uuid);
//            case EDGE:
//                return new EdgeId(uuid);
//            case QUEUE:
//                return new QueueId(uuid);
//            case TB_RESOURCE:
//                return new TbResourceId(uuid);
//            case NOTIFICATION_RULE:
//                return new NotificationRuleId(uuid);
//            case NOTIFICATION_TARGET:
//                return new NotificationTargetId(uuid);
//            case NOTIFICATION_TEMPLATE:
//                return new NotificationTemplateId(uuid);
//            case OAUTH2_CLIENT:
//                return new OAuth2ClientId(uuid);
//            case DOMAIN:
//                return new DomainId(uuid);
//        }
//        throw new IllegalArgumentException("EdgeEventType " + edgeEventType + " is not supported!");
//    }

}
